#!/bin/bash

echo "🔧 修复服务器CORS跨域问题..."

# 检查是否在服务器环境
if [ ! -d "/var/www/environmental-consulting" ]; then
    echo "❌ 找不到项目目录 /var/www/environmental-consulting"
    echo "请确保在正确的服务器上运行此脚本"
    exit 1
fi

# 进入项目目录
cd /var/www/environmental-consulting

# 1. 更新后端CORS配置
echo "📝 更新后端CORS配置..."
cd backend

# 创建临时Python脚本来修复CORS
cat > temp_fix_cors.py << 'EOF'
import os

# 读取main.py文件
with open('app/main.py', 'r', encoding='utf-8') as f:
    content = f.read()

# 确保CORS配置允许所有源
cors_config = '''# 配置 CORS（跨域资源共享）
# 根据环境变量动态配置允许的源
allowed_origins = [
    "http://localhost:3000",  # 前端开发地址
    "http://localhost:5173",  # Vite 开发服务器地址
    "http://127.0.0.1:3000",  # 备用地址
    "http://127.0.0.1:5173",  # 备用地址
]

# 添加生产环境的前端URL
frontend_url = os.getenv("FRONTEND_URL")
if frontend_url:
    allowed_origins.append(frontend_url)
    # 同时添加不带协议的版本
    if frontend_url.startswith("http://"):
        allowed_origins.append(frontend_url.replace("http://", "https://"))
    elif frontend_url.startswith("https://"):
        allowed_origins.append(frontend_url.replace("https://", "http://"))

# 生产环境临时允许所有源来解决跨域问题
allowed_origins = ["*"]

app.add_middleware(
    CORSMiddleware,
    allow_origins=allowed_origins,
    allow_credentials=True,
    allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH"],
    allow_headers=["*"],
)'''

# 查找并替换CORS配置
import re
pattern = r'# 配置 CORS.*?allow_headers=\["?\*"?\],?\s*\)'
replacement = cors_config

if re.search(pattern, content, re.DOTALL):
    content = re.sub(pattern, cors_config, content, flags=re.DOTALL)
    print("CORS配置已更新")
else:
    print("未找到CORS配置，添加新的配置")
    # 在FastAPI app创建后添加CORS配置
    app_pattern = r'(app = FastAPI\(.*?\))'
    if re.search(app_pattern, content, re.DOTALL):
        content = re.sub(app_pattern, r'\1\n\n' + cors_config, content, flags=re.DOTALL)

# 写回文件
with open('app/main.py', 'w', encoding='utf-8') as f:
    f.write(content)

print("CORS配置修复完成")
EOF

# 运行修复脚本
python temp_fix_cors.py
rm temp_fix_cors.py

# 2. 更新.env文件
echo "⚙️ 更新环境变量..."
cat > .env << 'EOF'
# 生产环境配置
DATABASE_URL=sqlite:///./environmental_consulting.db

# JWT配置
SECRET_KEY=gzqhsz-environmental-consulting-super-secret-key-2024-production
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30

# 应用配置
DEBUG=false

# 服务器配置
HOST=0.0.0.0
PORT=8001

# 前端URL（用于CORS）
FRONTEND_URL=http://121.37.182.125
EOF

cd ..

# 3. 重启PM2服务
echo "🔄 重启后端服务..."
pm2 delete environmental-api 2>/dev/null || true
pm2 start ecosystem.config.cjs
pm2 save

# 4. 检查服务状态
echo "✅ 检查服务状态..."
pm2 status
pm2 logs environmental-api --lines 10

echo ""
echo "🎉 CORS修复完成！"
echo "🌐 请访问: http://121.37.182.125"
echo "📚 API文档: http://121.37.182.125/docs"
echo "💚 健康检查: curl http://121.37.182.125/api/health"
